﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// 技能辅助模块
public class SkillAssist
{
    Creature _owner;

    public void Init(Creature owner)
    {
        _owner = owner;
    }

    // 自动选择目标
    // 在当前目标不能被攻击的情况下，自动选择新目标；
    // 若当前目标可直接攻击，那么直接返回。
    public Creature AutoSelectTarget(Creature curTarget)
    {
        // 不需要重新选择目标
        if (curTarget != null && curTarget.CanBeAttack(_owner))
        {
            return curTarget;
        }

        // 自动选择(第一版规则：选择离我最近的可攻击NPC)
        float minDis = float.MaxValue;
        Npc minDisNpc = null;
        foreach (var npcItem in NpcMgr.Instance.AllNpc)
        {
            Npc npc = npcItem.Value;
            // 若是友好npc，不能作为目标
            if (!npc.CanBeAttack(_owner))
            {
                continue;
            }
            // 算距离
            var dis = _owner.Position.Distance25D(npc.Position);
            if (dis > MiscTable.Instance[1].FeelingDistance) // 大于视野距离，不选
            {
                continue;
            }

            if (dis < minDis)
            {
                minDis = dis;
                minDisNpc = npc;
            }
        }

        return minDisNpc;
    }
}

